const router = require('koa-router')()
const Role = require('../model/roleSchema')
const utils = require('../utils/utils')
router.prefix('/role')


//角色列表渲染
router.get('/list', async (ctx) => {
  var { roleName, remark } = ctx.request.query
  // console.log('ctx.request.query', ctx.request.query);
  var { page, skipIndex } = utils.pager(ctx.request.query)
  try {
    let params = {}
    if (roleName) params.roleName = { $regex: roleName }
    if (remark) params.remark = remark
    // find返回所有的数据
    const query = Role.find(params)
    // limit返回指定数量的数据，skip跳过指定数量的数据
    const list = await query.skip(skipIndex).limit(page.pagesize)
    //countDocuments返回符合条件的总数
    const total = await Role.countDocuments(params)
    // 7. 返回成功响应（假设utils.success是自定义的成功响应格式）
    ctx.body = utils.success({ list, total })
  } catch (err) {
    console.log(err);
  }
})
//角色列表新增和编辑
router.post('/operate', async (ctx) => {
  const params = ctx.request.body
  // console.log("params",params);
  const { active, roleName, _id } = params
  if (active === 'create') {
    if (!roleName) {
      ctx.body = utils.fail('参数错误')
      return
    }
    //防止出现重复
    let res = await Role.findOne({ $or: [{ roleName }] }, '_id roleName')
    if (res) {
      ctx.body = utils.fail('角色名称已存在')
      return
    } else {
      let res = await Role.create(params)
      ctx.body = utils.success(res, '角色创建成功')
    }
  } else {
    let res = await Role.findOneAndUpdate({ _id }, params)
    ctx.body = utils.success(res, '角色更新成功')
  }
})

//角色删除
router.post('/delete', async (ctx) => {
  let _id = ctx.request.body
  try {
    let res = await Role.findByIdAndDelete(_id)
    ctx.body = utils.success(res, '角色删除成功')
  } catch (error) {
    ctx.body = utils.fail(error.message)
  }
})


//角色恢复
router.post('/update', async (ctx) => {

})

//设置权限
router.post('/permission', async (ctx) => {
  var { _id, ...params } = ctx.request.body
  try {
    // console.log('params=>', params);
    let res = await Role.findByIdAndUpdate(_id, params)
    ctx.body = utils.success({ msg: 'ok', code: 200, data: '设置成功' })
  } catch (error) {
    console.log(error);
  }
})

module.exports = router
